package com.zimin.cloud.user.biz;

import com.zimin.cloud.mine.pojo.user.business.FollowingGroupBO;
import com.zimin.cloud.mine.pojo.user.business.UserFollowingBO;
import com.zimin.cloud.mine.pojo.user.view.FollowingGroupVO;
import com.zimin.cloud.mine.pojo.user.view.UserFollowingVO;
import com.zimin.cloud.mine.pojo.user.view.UserInfoVO;
import com.zimin.cloud.user.service.IUserFollowingService;

import java.util.List;

/**
 * <p>
 * 用户关注表 业务对象
 * </p>
 *
 * @author zimin
 * @since 2022-06-14 15:53
 */
public interface IUserFollowingBiz extends IUserFollowingService {

    /**
     * <p>添加用户关注</p>
     *
     * @param userFollowingBO
     * @return void
     * @since 2022-06-25 22:06:15
     */
    Boolean addUserFollowings(UserFollowingBO userFollowingBO);

    /**
     * <p>获取用户关注列表</p>
     *
     * @param userId 用户ID
     * @return java.util.List<com.zimin.cloud.mine.pojo.user.view.FollowingGroupVO>
     * @since 2022-06-26 22:25:59
     */
    List<FollowingGroupVO> getUserFollowing(String userId);

    /**
     * <p>获取粉丝列表</p>
     *
     * @param userId 用户ID
     * @return java.util.List<com.zimin.cloud.mine.pojo.user.view.UserFollowingVO>
     * @since 2022-06-27 18:35:42
     */
    List<UserFollowingVO> getUserFans(String userId);


    /**
     * <p>添加用户关注分组</p>
     *
     * @param followingGroupBO 用户关注对象
     * @return java.lang.String
     * @since 2022-06-28 21:38:15
     */
    Boolean save(FollowingGroupBO followingGroupBO);

    /**
     * <p>获取用户关注分组</p>
     *
     * @param userId 用户ID
     * @return java.util.List<com.zimin.cloud.mine.pojo.user.view.UserFollowingVO>
     * @since 2022-06-28 21:46:05
     */
    List<UserFollowingVO> getUserFollowingGroups(String userId);

    /**
     * <p>检查用户是否被关注</p>
     *
     * @param records 校验列表
     * @param userId 关注的用户ID
     * @return java.util.List<com.zimin.cloud.mine.pojo.user.view.UserInfoVO>
     * @since 2022-06-28 22:05:57
     */
    List<UserInfoVO> checkFollowingStatus(List<UserInfoVO> records, String userId);
}
